#include "widget.h"
#include "ui_widget.h"

#include <QTimer>
#include <QProgressBar>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    BuildProgressBar();
}

Widget::~Widget()
{
    delete ui;
}


void Widget::BuildProgressBar()
{
    QProgressBar* bar = new QProgressBar(this);
    bar->move(50,200);
    bar->setObjectName("bar");
    bar->setFixedSize(200,60);

    // 设置进度块的颜色为红色（默认是绿色的）
    bar->setStyleSheet("QProgressBar::chunk {background-color: #FF0000;}");
    // 但是数字会显示在左上角，需要使用Alignment调整
    bar->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);

    QTimer* timer = new QTimer(this);
    timer->setObjectName("timer");

    connect(timer, &QTimer::timeout, this, &Widget::updateBar);

    // 每隔100毫秒触发一次，相当于1秒触发10次
    timer->start(100);
}

void Widget::updateBar()
{
    QProgressBar* bar = findChild<QProgressBar*>("bar");
    QTimer* timer = findChild<QTimer*>("timer");

    if(bar && timer)
    {
        int value = bar->value();
        if(value >= 100)
        {
            timer->stop();
            return;
        }

        bar->setValue(value+1);
    }
}
